===============================================================================
=                        cam_os_wrapper change log                            =
===============================================================================

v1.0.16 - 2019-05-10
  Fixed
    - cam_os_util_list.h cause ABICC check g++ build fail.

v1.0.15 - 2019-05-06
  Added
    - Add CamOsMemInvalidate for invalidate data in cache.

v1.0.14 - 2019-04-10
  Fixed
    - CamOsSetTimeOfDay, _TestCamOsSystemTime
      Fix coverity issue - "Memory - illegal accesses".

v1.0.13 - 2019-03-05
  Added
    - CamOsIrq###
      Support interrupt handler setup and control.

v1.0.12 - 2019-02-01
  Fixed
    - CamOsMutex_t and other CamOs### strust may cause alignment exception issue
      in Linux.

v1.0.11 - 2019-01-24
  Changed
    - CamOsGetMonotonicTime sourcing from arch in RTK.
    - Update Software Copyright.

v1.0.10 - 2019-01-16
  Added
    - CamOsMiuPipeFlush
      Flush MIU write buffer.
  Changed
    - CamOsSpinLockIrq and CamOsSpinUnlockIrq are no longer supported.

v1.0.9 - 2018-12-27
  Added
    - CamOsPrintString
      Writes the C string pointed without format to the standard output.
  Fixed
    - CamOsPrintf
      Fix system crash if print more than 256 characters in RTK.

v1.0.8 - 2018-12-20
  Added
    - In kernel space, redirect atoi and qsort to linux kernel's implement.
  Fixed
    - In RTK and user space, CamOsAtomicIncReturn AND CamOsAtomicDecReturn will
      return the value that before add or sub.

v1.0.7 - 2018-12-11
  Added
    - CamOsMsDelay / CamOsUsDelay
    - CamOsSpin###
      Support spinlock synchronization.
  Fixed
    - Replace __always_inline with FORCE_INLINE to avoid warnings in RTK.

v1.0.6 - 2018-09-13
  Added
    - CamOsHexdump
      Print memory data in hex format.
    - CamOsUsSleep
      Suspend execution for microsecond intervals.
    - CamOsTimeDiff
      Returns the difference between two CamOsTimespec_t.
    - CamOsMemFlush
      Clean and invalidate cache.
    - CamOsAtomicCompareAndSwap
      An atomic instruction used in multithreading to achieve synchronization.
      It compares the contents of a memory location with a given value and, only
      if they are the same, modifies the contents of that memory location to a
      new given value.
  Changed
    - CamOsThreadAttrb_t
      Add szName field and support set name while thread created.
    - CamOsTsemDownInterruptible
      Change prototype define, it will return CamOsRet_e now.
    - CamOsTcondWaitInterruptible
      Change prototype define, it will return CamOsRet_e now.

v1.0.5 - 2017-12-18
  Added
    - CAM_OS_MAX_INT
    - Makefile_Linux_user
      Add Makefile for shared library build(make -f Makefile_Linux_user).
  Changed
    - CamOsTsemInit
      In RTK, use MsCreateDynSemExtend to set nVal to current value, and set
      init value to (CAM_OS_MAX_INT - 1). Because MsCreateDynSem sets nVal to
      current value and init value and current value is larger than init value
      will trigger exception.
    - CAM_OS_MAX_TIMEOUT
      Use u32 max value as CAM_OS_MAX_TIMEOUT

v1.0.4 - 2017-12-06
  Changed
    - Move offsetof definition to cam_os_util.h and add definition without
      size_t to avoid compile error if stddef.h not be included.
  Fixed
    - In RTK, if timer has stopped, CamOsTimerModify start a new timer and
      don't release the old timer.

v1.0.3 - 2017-11-30
  Changed
    - Integrate all header files into cam_os_wrapper.h. All functions could be
      used just include cam_os_wrapper.h.
    - CamOsTcond###
      Replace wait queue with completion for Linux kernel to simplify control
      flow.

v1.0.2 - 2017-11-24
  Added
    - CAM_OS_LIST_LAST_ENTRY
      Support "list last entry" in cam_os_util_list.h
    - NO_MDRV_MSYS
      Support disable relative functions for msys
      (add -DNO_MDRV_MSYS in Makefile)
  Changed
    - CamOsMemAlloc / CamOsMemCalloc
      Use kzalloc when requested size <= 2KB(half of page size), and use vzalloc
      when requested size > 2KB to improve memory usage
  Fixed
    - CamOsThreadSchedule / CamOsThreadWakeUp
      Fix schedule and wakeup function in RTK
    - CamOsRwsem###
      Fix read write semaphore function in RTK
    - CamOsTimer###
      Fix timer function in RTK

v1.0.1 - 2017-11-20
  Added
    - CamOsTsemDownInterruptible
      Add prototype define in cam_os_wrapper.h
    - CamOsListSort
      Add symbol to cam_os_export.c
  Changed
    - Support CamOsPhyMemMap/CamOsPhyMemUnMap in Linux user space
    - Mutex can be used without initialization. It will be inited automatically.
    - Support CamOsThreadStop/CamOsThreadShouldStop in RTK
    - uint8_t/int8_t/uint16_t/int16_t/uint32_t/int32_t/uint64_t
      /int64_t. Use u8/s8/u16/s16/u32/s32/u64/s64 to keep portability
    - Remove bool(replace with u8) to keep portability

v1.0.0 - 2017-11-03
  Added
    - CamOsThreadSchedule/CamOsThreadWakeUp
      Control thread to idle and wake up.
    - CamOsMutexTryLock
      Try lock the mutex, and return as non-blocking mode.
    - CamOsRwsem###
      Support read-write semaphore operation.
    - CamOsPhyMemMap/CamOsPhyMemUnMap
      Map and unmap physical memory to virtual address.
    - CamOsMemCache###
      Create a memory cache(memory pool) and allocate with specified size to
      ignore internal fragmentation.
    - CamOsTimer###
      Support timer operation.
    - CamOsIdr###
      Support data record with IDR data structure. In Linux user space and RTK,
      it is implemented with informal IDR(bitmap and array).
    - CamOsInInterrupt
      Check if current function runs in ISR.
    - CamOsSmpMemoryBarrier
      Symmetric multiprocessing memory barrier.
    - CamOsStrError
      Return string describing error number.
    - CamOsPanic
      Put system into panic.
    - CamOsStrtol/CamOsStrtoul/CamOsStrtoull
      Convert C string to long, unsigned long, unsigned long long.
    - cam_os_util_bug.h
      Support error handle function: CAM_OS_BUG, CAM_OS_BUG_ON,
      CAM_OS_IS_ERR_VALUE, ...
    - cam_os_util_ioctl.h
      Support ioctl number function: CAM_OS_IO, CAM_OS_IOW, ...
  Changed
    - Replace u8/s8/u16/s16/u32/s32/u64/s64 with uint8_t/int8_t/uint16_t/int16_t
      uint32_t/int32_t/uint64_t/int64_t.
    - CamOsThreadSetName/CamOsThreadGetName
      Only support to access name by thread self in uclibc.

v0.1.2 - 2017-10-27
  Added
    - CamOsTcond###
      Condition wait functions, please reference to cam_os_wrapper.h.
    - CAM_OS_HASH_###
      Hash table operation functions, please reference to cam_os_hash.h.
    - CAM_OS_BITMAP_###
      Bitmap opration functions, please reference to cam_os_bitmap.h.
    - CAM_OS_LIKELY, CAM_OS_UNLIKELY, and CAM_OS_ARRAY_SIZE
  Changed
    - Use native semaphore of operation system. Original functions comprise
      one mutex and one counter(CamOsTsem###).
    - Supplement list operation functions, please reference cam_os_list.h.
  Removed
    - Remove CamOsTsemGetValue and CamOsTsemReset because this two APIs do not
      fit general semaphore usage.

v0.1.1 - 2017-10-23
  Added
    - CamOsSnprintf
